package persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import util.Conexion;
import bean.AlmacenFisico;
import bean.Catalogo;

public class TALMFDAO {

	public List<Catalogo> getAlmacenesFisicos(String almacen) throws SQLException{
		List<Catalogo> almacenes = new ArrayList<Catalogo>();
		PreparedStatement pstm = Conexion.obtenerConexion().prepareStatement("select ALCODF,ALNOMF from prodtecni.talmf where ALCODV=? order by ALCODF");
		pstm.setString(1, almacen);
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			Catalogo catalogo = new Catalogo();
			catalogo.setCodigo(rs.getString("ALCODF"));
			catalogo.setDescripcion(rs.getString("ALNOMF"));
			almacenes.add(catalogo);
		}
		rs.close();
		pstm.close();
		return almacenes;
	}
	
	public List<Catalogo> getAlmacenesFisicos() throws SQLException{
		List<Catalogo> almacenes = new ArrayList<Catalogo>();
		PreparedStatement pstm = Conexion.obtenerConexion().prepareStatement("select ALCODF,ALNOMF from prodtecni.talmf order by ALCODF");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			Catalogo catalogo = new Catalogo();
			catalogo.setCodigo(rs.getString("ALCODF"));
			catalogo.setDescripcion(rs.getString("ALNOMF"));
			almacenes.add(catalogo);
		}
		rs.close();
		pstm.close();
		return almacenes;
	}
	
	public List<AlmacenFisico> getAlmacenesFisico(String almacen) throws SQLException{
		List<AlmacenFisico> almacenes = new ArrayList<AlmacenFisico>();
		PreparedStatement pstm = Conexion.obtenerConexion().prepareStatement("select ALCODV,ALCODF,ALNOMF,ALRESP,ALSITU,ALUCRE,ALFCRE,ALHCRE from prodtecni.talmf where ALCODV=? order by ALCODF");
		pstm.setString(1, almacen);
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			AlmacenFisico almacenfisico = new AlmacenFisico();
			almacenfisico.setCodvirtual(rs.getString("ALCODV"));
			almacenfisico.setCodfisico(rs.getString("ALCODF"));
			almacenfisico.setDescricionAlmacenFisico(rs.getString("ALNOMF"));
			almacenfisico.setResponsable(rs.getString("ALRESP"));
			almacenfisico.setSituacion(rs.getString("ALSITU"));
			almacenfisico.setUsuarioIngreso(rs.getString("ALUCRE"));
			almacenfisico.setFechaIngreso(rs.getInt("ALFCRE"));
			almacenfisico.setHoraIngreso(rs.getInt("ALHCRE"));
			almacenes.add(almacenfisico);			
		}
		rs.close();
		pstm.close();
		return almacenes;
	}	
	

	
	public int registrarAlmacenFisico(AlmacenFisico almacenFisico)throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexion().prepareStatement(""
				+ "insert into prodtecni.TALMF(ALCODV,ALCODF,ALNOMF,ALRESP,ALSITU,ALUCRE,ALFCRE,ALHCRE) "
				+ "values(?,?,?,?,?,?,?,?)");
		pstm.setString(1, almacenFisico.getCodvirtual());
		pstm.setString(2, almacenFisico.getCodfisico());
		pstm.setString(3, almacenFisico.getDescricionAlmacenFisico());
		pstm.setString(4,almacenFisico.getResponsable());
		pstm.setString(5,almacenFisico.getSituacion());
		pstm.setString(6, almacenFisico.getUsuarioIngreso());
		pstm.setInt(7,almacenFisico.getFechaIngreso());
		pstm.setInt(8,almacenFisico.getHoraIngreso());
		
		int result = pstm.executeUpdate();
		pstm.close();
		return result;
	}
	
	public int eliminarAlmacenFisico(String almacenFisico)throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexion().prepareStatement("delete from prodtecni.TALMF where alcodv = ?");
		pstm.setString(1, almacenFisico);
		int result = pstm.executeUpdate();
		pstm.close();
		return result;
	}
	
	public boolean exist(AlmacenFisico almacenFisico)throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexion().prepareStatement("select ALCODF from prodtecni.TALMF where ALCODV=? and ALCODF=?");
		pstm.setString(1, almacenFisico.getCodvirtual());
		pstm.setString(2, almacenFisico.getCodfisico());
		boolean exist = false;
		ResultSet rs = pstm.executeQuery();
		if(rs.next()){
			exist = true;
		}
		rs.close();
		pstm.close();
		return exist;
	}
	
}
